﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data;
using System.Data.SqlClient;

namespace DAO
{
    public class PhieuDatDAO
    {
        //public static List<PhieuDatDTO> SelectPhieuDatAll()
        //{
        //    DataTable dataTable = DataProvider.ExecuteReader("sp_SelectPhieuDatAll");
        //    List<PhieuDatDTO> listphieuDat = new List<PhieuDatDTO>();
        //    if (dataTable.Rows.Count > 0)
        //    {
        //        foreach (DataRow dataRow in dataTable.Rows)
        //        {
        //            PhieuDatDTO phieuDat = new PhieuDatDTO();
        //            phieuDat.Ma_PD = dataRow["Ma_PD"].ToString();
        //            phieuDat.NV_Dat = dataRow["NV_Dat"].ToString();
        //            phieuDat.Ten_KH = dataRow["Ten_KH"].ToString();
        //            phieuDat.DiaChi = dataRow["DiaChi"].ToString();
        //            phieuDat.DienThoai = dataRow["DienThoai"].ToString();
        //            phieuDat.NgayDat = DateTime.Parse(dataRow["NgayDat"].ToString());
        //            phieuDat.ThanhTien = float.Parse(dataRow["ThanhTien"].ToString());
        //            phieuDat.TinhTrang = int.Parse(dataRow["TinhTrang"].ToString());
        //            phieuDat.GhiChu = dataRow["GhiChu"].ToString();

        //            listphieuDat.Add(phieuDat);
        //        }
        //    }
        //    else
        //    {
        //        listphieuDat = null;
        //    }
        //    return listphieuDat;
        //}

        public static DataTable SelectPhieuDatAll(ref int TongPhieu)
        {
            SqlConnection conn = new SqlConnection(DataProvider.ConnectionString);
            SqlCommand cmd = new SqlCommand("sp_SelectPhieuDatAll", conn);

            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter para = new SqlParameter("@TongPhieu", SqlDbType.Int);
            para.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(para);

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable datatable = new DataTable();
            adapter.Fill(datatable);
            TongPhieu = (int)para.Value;
            conn.Close();

            return datatable;

            //DataTable dataTable = DataProvider.ExecuteReader("sp_SelectPhieuDatAll");
            //return dataTable;
        }

        public static PhieuDatDTO SelectPhieuDatById(string maPhieuDat)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@Ma_PD",maPhieuDat));            
            DataTable dataTable = DataProvider.ExecuteReader("sp_SelectPhieuDatById",sqlParamas);

            PhieuDatDTO phieuDatDTO = new PhieuDatDTO();
            if (dataTable.Rows.Count > 0)
            {
                DataRow dataRow = dataTable.Rows[0];
                phieuDatDTO.Ma_PD = dataRow["Ma_PD"].ToString();
                phieuDatDTO.NV_Dat = dataRow["NV_Dat"].ToString();
                phieuDatDTO.Ten_KH = dataRow["Ten_KH"].ToString();
                phieuDatDTO.DiaChi = dataRow["DiaChi"].ToString();
                phieuDatDTO.DienThoai = dataRow["DienThoai"].ToString();
                phieuDatDTO.NgayDat = DateTime.Parse(dataRow["NgayDat"].ToString());
                phieuDatDTO.ThanhTien = float.Parse(dataRow["ThanhTien"].ToString());
                phieuDatDTO.TinhTrang = int.Parse(dataRow["TinhTrang"].ToString());
                phieuDatDTO.GhiChu = dataRow["GhiChu"].ToString();
            }
            else
            {
                phieuDatDTO = null;
            }

            return phieuDatDTO;
        }

        public static string CreatePhieuDatId()
        {
            DataTable dataTable = DataProvider.ExecuteReader("sp_CreatePhieuDatID", null);
            string ID = null;

            if (dataTable.Rows.Count > 0)
            {
                DataRow dataRow = dataTable.Rows[0];
                ID = dataRow[0].ToString();
            }

            return ID;
        }

        public static bool InsertPhieuDat(PhieuDatDTO phieuDatDTO)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@Ma_PD", phieuDatDTO.Ma_PD));
            sqlParamas.Add(new SqlParameter("@NV_Dat", phieuDatDTO.NV_Dat));
            sqlParamas.Add(new SqlParameter("@Ten_KH", phieuDatDTO.Ten_KH));
            sqlParamas.Add(new SqlParameter("@DiaChi", phieuDatDTO.DiaChi));
            sqlParamas.Add(new SqlParameter("@DienThoai", phieuDatDTO.DienThoai));
            sqlParamas.Add(new SqlParameter("@NgayDat", phieuDatDTO.NgayDat));
            sqlParamas.Add(new SqlParameter("@ThanhTien", phieuDatDTO.ThanhTien));
            sqlParamas.Add(new SqlParameter("@TinhTrang", phieuDatDTO.TinhTrang));
            sqlParamas.Add(new SqlParameter("@GhiChu", phieuDatDTO.GhiChu));

            return DataProvider.ExecuteNoneQuery("sp_InsertPhieuDat", sqlParamas);          
        }

        public static bool UpdatePhieuDatById(PhieuDatDTO phieuDatDTO)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@Ma_PD", phieuDatDTO.Ma_PD));
            sqlParamas.Add(new SqlParameter("@NV_Dat", phieuDatDTO.NV_Dat));
            sqlParamas.Add(new SqlParameter("@Ten_KH", phieuDatDTO.Ten_KH));
            sqlParamas.Add(new SqlParameter("@DiaChi", phieuDatDTO.DiaChi));
            sqlParamas.Add(new SqlParameter("@DienThoai", phieuDatDTO.DienThoai));
            sqlParamas.Add(new SqlParameter("@NgayDat", phieuDatDTO.NgayDat));
            sqlParamas.Add(new SqlParameter("@ThanhTien", phieuDatDTO.ThanhTien));
            sqlParamas.Add(new SqlParameter("@TinhTrang", phieuDatDTO.TinhTrang));
            sqlParamas.Add(new SqlParameter("@GhiChu", phieuDatDTO.GhiChu));

            return DataProvider.ExecuteNoneQuery("sp_UpdatePhieuDatById", sqlParamas);
        }

        public static bool DeletePhieuDatById(string maPhieuDat)
        {
            List<SqlParameter> sqlParamas = new List<SqlParameter>();
            sqlParamas.Add(new SqlParameter("@Ma_PD", maPhieuDat));
            return DataProvider.ExecuteNoneQuery("sp_DeletePhieuDatById",sqlParamas);
        }
    }
}
